package com.yumei.trader.gym.util;

import java.math.BigDecimal;
import java.text.DecimalFormat;
import java.text.NumberFormat;
import java.util.Random;
import java.util.regex.Pattern;

public class StringUtils {

	public static boolean isMobile(String mobile) {

		return Pattern.matches("^1[345789]\\d{9}$", mobile);
	}

	public static boolean isEmail(String email) {

		return email.contains("@");
	}

	public static boolean isNull(String str) {

		return (str == null) || (str.trim().length() == 0) || str.equals("null");
	}

	/**
	 * 获取文本总长度 中文 1 其他0.5
	 */
	public static double getLength(String s) {
		double valueLength = 0;
		String chinese = "[\u4e00-\u9fa5]";
		for (int i = 0; i < s.length(); i++) {
			// 获取一个字符
			String temp = s.substring(i, i + 1);
			// 判断是否为中文字符
			if (temp.matches(chinese)) {
				// 中文字符长度为1
				valueLength += 1;
			} else {
				// 其他字符长度为0.5
				valueLength += 0.5;
			}
		}
		//进位取整
		return Math.ceil(valueLength);
	}

	/**
	 * 千位分割
	 * @param str 需要转换的数字字符串
	 * @return 转换后的字符串结果
	 */
	public static String toDivision(String str){
		DecimalFormat df = new DecimalFormat(",###,###");
		BigDecimal bd = new BigDecimal(str);
		return df.format(bd);
	}

	public static boolean isEmpty(String str) {
		if (str == null || "".equals(str) || "null".equalsIgnoreCase(str)) {
			return true;
		}
		for (int i = 0; i < str.length(); i++) {
			char c = str.charAt(i);
			if (c != ' ' && c != '\t' && c != '\r' && c != '\n') {
				return false;
			}
		}
		return true;
	}

	public static boolean isIdCard(String num){
	
		if(isNull(num)){
			return false;
		}
		
		if(num.length() == 18 || num.length() == 15){
			return true;
		}
		return false;
	}

	
	public static boolean isIntStr(String str){

		if(StringUtils.isNull(str)){
			return false;
		}
		
		if(str.equals("null")){
			return false;
		}
		
		try{
			Integer.parseInt(str);
		}catch(Exception e){
			e.printStackTrace();
			return false;
		}
		return true;
	}
	
	
	public static boolean isFloatStr(String str){

		if(StringUtils.isNull(str)){
			return false;
		}
		
		if(str.equalsIgnoreCase("null")){
			return false;
		}

		try{
			Float.parseFloat(str);
		}catch(Exception e){
			e.printStackTrace();
			return false;
		}
		return true;
	}

	public static boolean isWebsite(String str){
		return str.startsWith("http://") || str.startsWith("https://");
	}

	/**
	 * 随机码
	 * @param len
	 * @return
	 */
	public static String randomVerify(int len){
		
		String verify = "";
		
		for(int i=0;i<len;i++){
			verify +=String.valueOf(new Random().nextInt(9));
		}
		
		return verify;
	}


	public static String getUUID(String code){

		String str = String.valueOf(System.currentTimeMillis())+randomVerify(6);

		return code+str.substring(5);
	}



	public static String moneyFormat(double money,int points){

		//获取货币数值格式
		NumberFormat number = NumberFormat.getNumberInstance();
		number.setMinimumFractionDigits(points);//设置数的小数部分所允许的最小位数(如果不足后面补0)
		number.setMaximumFractionDigits(points);//设置数的小数部分所允许的最大位数(如果超过会四舍五入)
		return number.format(money);//￥12,343,171.60
	}


	public static String formatCash(String s, int len) {
		if (s == null || s.length() < 1) {
			return "";
		}
		NumberFormat formater = null;
		double num = Double.parseDouble(s);
		if (len == 0) {
			formater = new DecimalFormat("###,###");

		} else {
			StringBuffer buff = new StringBuffer();
			buff.append("###,###.");
			for (int i = 0; i < len; i++) {
				buff.append("#");
			}
			formater = new DecimalFormat(buff.toString());
		}
		return formater.format(num);
	}


	public static String formatCash(double num, int len) {

		NumberFormat formater = null;

		if (len == 0) {
			formater = new DecimalFormat("###,###");
		} else {
			StringBuffer buff = new StringBuffer();
			buff.append("###,###.");
			for (int i = 0; i < len; i++) {
				buff.append("#");
			}
			formater = new DecimalFormat(buff.toString());
		}
		return formater.format(num);
	}



	private static final String  REGEX_HTML_TAG     = "<(\\S*?)[^>]*>.*?|<.*? />";


	/**
	 *
	 * 过滤掉所有的HTML标签和里面的内容
	 * 就是过滤掉<>里掉内容和</>里的内容
	 * @param content
	 * @return
	 */
	public static String removeHtmlTagWithContent(String content) {
		String newContent = content.replaceAll(REGEX_HTML_TAG, "");
		newContent = newContent.replaceAll("\\s", "");
		return newContent;
	}

}
